Bugs and Debugging of Concurrent and Multicore Software
نویسندگان
چکیده
Multicore platforms have been widely adopted in recent years and have resulted in increased development of concurrent software. However, concurrent software is still difficult to test and debug for at least three reasons. (1) concurrency bugs involve complex interactions among multiple threads; (2) concurrent software have a large interleaving space and (3) concurrency bugs are hard to reproduce. Current testing techniques and solutions for concurrency bugs typically focus on exposing concurrency bugs in the large interleaving space, but they often do not provide debugging information for developers (or testers) to understand the bugs. Debugging, the process of identifying, localizing and fixing bugs, is a key activity in software development. Debugging concurrent software is significantly more challenging than debugging sequential software mainly due to the issues like non-determinism and difficulties of reproducing failures. This thesis investigates the first and third of the above mentioned problems in concurrent software with the aim to help developers (and testers) to better understand concurrency bugs. The thesis first identifies a number of gaps in the body of knowledge on concurrent software bugs and debugging. Second, it identifies that although a number of methods, models and tools for debugging concurrent and multicore software have already been proposed, but the body of work partially lacks a common terminology and a more recent view of the problems to solve. Further, this thesis proposes a classification of concurrency bugs and discusses the properties of each type of bug. The thesis maps relevant studies with our proposed classification and explores concurrency-related bugs in realworld software. Specifically, it analyzes real-world concurrency bugs with respect to the severity of consequence and effort required to fix them. The thesis findings indicate that it is still hard for developers and testers to distinguish concurrency bugs from other types of software bugs. Moreover, a general con-
منابع مشابه
A Study of Concurrency Bugs in an Open Source Software
Concurrent programming puts demands on software debugging and testing, as concurrent software may exhibit problems not present in sequential software, e.g., deadlocks and race conditions. In aiming to increase efficiency and effectiveness of debugging and bug-fixing for concurrent software, a deep understanding of concurrency bugs, their frequency and fixing-times would be helpful. Similarly, t...
متن کاملDesigning Debugging Models for Object Oriented Systems
Bugs are inevitable in any software development life cycle. Most bugs are detected and removed in the testing phase. In software, we can classify bugs into two categories: (1) bugs of different severity (2) bugs of different complexity. Prior knowledge of bug distribution of different complexity in software can help project managers in allocating testing resources and tools. Various researchers...
متن کاملExplaining Intermittent Concurrent Bugs by Minimizing Scheduling Noise
A noise maker is a tool for testing multi-threaded programs. It seeds shared memory accesses and synchronization events (concurrent events) with conditional context switches and timeouts during runtime, in order to increase the likelihood that a concurrent bug manifests itself. However, an instrumented program with many seeded events may not be useful for debugging; events have been seeded all ...
متن کاملRADBench: A Concurrency Bug Benchmark Suite
Testing and debugging tools for concurrent programs are often validated on known bugs. To aid the development of these tools, we present the Race, Atomicity, and Deadlock Benchmark (RADBench) suite. The RADBench suite contains the full source of 10 real concurrency bugs found in large open-source software projects including Mozilla SpiderMonkey, Mozilla NSPR, Memcached, Apache Web Server, and G...
متن کاملOutput-Deterministic Replay for Multicore Debugging
Reproducing bugs is hard. Deterministic replay systems aim to address this problem, by providing a high-fidelity replica of an original program execution that can be repeatedly executed to zero-in on bugs. Unfortunately, existing replay systems for multiprocessor programs fall short. These systems either incur high overheads, rely on nonstandard multiprocessor hardware, or fail to reliably repr...
متن کامل